package com.gitee.qdbp.general.thirdpart.api.trade.model;

import com.gitee.qdbp.able.model.reusable.ExtraData;
import com.gitee.qdbp.general.trade.enums.PayChannel;
import com.gitee.qdbp.general.trade.enums.PaySource;

/**
 * 支付参数
 *
 * @author zhaohuihua
 * @version 171020
 */
public class BasePayParams extends ExtraData {

    /** 版本序列号 **/
    private static final long serialVersionUID = 1L;

    /** 支付渠道 **/
    private PayChannel payChannel;
    /** 支付来源(PC/H5/APP之类) **/
    private PaySource paySource;
    /** 订单类型 **/
    private String orderType;
    /** 订单编号 **/
    private String orderId;

    /** 支付渠道 **/
    public PayChannel getPayChannel() {
        return payChannel;
    }

    /** 支付渠道 **/
    public void setPayChannel(PayChannel payChannel) {
        this.payChannel = payChannel;
    }

    /** 支付来源(PC/H5/APP之类) **/
    public PaySource getPaySource() {
        return paySource;
    }

    /** 支付来源(PC/H5/APP之类) **/
    public void setPaySource(PaySource paySource) {
        this.paySource = paySource;
    }

    /** 订单类型 **/
    public String getOrderType() {
        return orderType;
    }

    /** 订单类型 **/
    public void setOrderType(String orderType) {
        this.orderType = orderType;
    }

    /** 订单编号 **/
    public String getOrderId() {
        return orderId;
    }

    /** 订单编号 **/
    public void setOrderId(String orderId) {
        this.orderId = orderId;
    }

//    /**
//     * 将当前对象转换为子类对象
//     *
//     * @param clazz 目标类型
//     * @return 目标对象
//     */
//    public <T extends BasePayParams> T to(Class<T> clazz) {
//        T instance;
//        try {
//            instance = clazz.newInstance();
//        } catch (Exception e) {
//            throw new IllegalArgumentException("Failed to create " + clazz.getSimpleName() + " instance.", e);
//        }
//
//        instance.setOrderType(this.getOrderType());
//        instance.setOrderId(this.getOrderId());
//        instance.setPayChannel(this.getPayChannel());
//        instance.setPaySource(this.getPaySource());
//        instance.setExtra(this.getExtra());
//        return instance;
//    }
}
